/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"A5DA64CE-4C73-44D0-982C-76CAF50A3008",variableType:4}
 */
var fContPaq = 0;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"61E1BFAB-3B0A-4ACC-B67A-32D6D2BB78F9",variableType:4}
 */
var fTotKg = 0;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"FAD41A37-8A41-40FB-A909-306EADA6101C",variableType:4}
 */
var fTotP2 = 0;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"D254386F-C7A3-41A1-973F-3E299AA6B37D",variableType:4}
 */
var fTotRecep = 0;

/**
 * @properties={typeid:24,uuid:"32F0E9B0-9282-4809-84D5-9F1F93891B96"}
 */
function llenarVl(valuelist)
{
	var query = 'SELECT nro_oc '+ globals.gCharConcat + ' \' - \' '+ globals.gCharConcat +' rtrim(p.descripcion) '+ globals.gCharConcat +' \' - \' '+ globals.gCharConcat +' cantidad_pendiente_entrega as "vl", d.oc_detalle_id FROM recep_detalle as "d" '+
				'join oc_detalle as "o" on d.oc_detalle_id = o.oc_detalle_id '+
				'join oc_cabecera as "c" on c.oc_cabecera_id = o.oc_cabecera_id '+
				'join productos as "p" on p.producto_id = o.producto_id '+
				'where recep_cabecera_id = ? '+
				'group by d.oc_detalle_id, o.cantidad_pendiente_entrega, p.descripcion, c.nro_oc '+
				'order by d.oc_detalle_id'
	var max 	= -1
	var args 	= [recep_cabecera_id]
	var server 	= databaseManager.getDataSourceServerName(controller.getDataSource())
	var ds 		= databaseManager.getDataSetByQuery(server,query,args,max)
	
	application.setValueListItems(valuelist,ds)	
}

/**
 * Callback method for when form is shown.
 *
 * @param {Boolean} firstShow form is shown first time after load
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"810F8585-B0C0-4467-8CC4-BE824752C257"}
 */
function onShow(firstShow, event) {
	
	controlaTipo()
	llenarVl('recepciones_oc_detalle_din')

	fTotRecep 	= total
	//fContPaq 	= recep_cabecera_to_paquetes.getSize()
	fTotKg 		= tot_kg
	fTotP2 		= tot_p2
}

/**
 * @properties={typeid:24,uuid:"7F8BB2B3-2695-4529-8E5F-06868C4673EA"}
 */
function controlaTipo()
{
	if (tipo == 0)
	{
		elements.grp_cliente.visible		= 0
		elements.grp_proveedor.visible 		= 1
		elements.tabs_180.tabIndex			= 2
		forms.recepciones_oc_tab.fFormLlama = 'recepciones_autoriza_dtl'
	}
	else
	{
		elements.grp_cliente.visible				= 1
		elements.grp_proveedor.visible 				= 0
		elements.tabs_180.tabIndex					= 1
		forms.recepciones_carga_rem_tab.fFormLlama 	= 'recepciones_autoriza_dtl'
	}
}

/**
 * @properties={typeid:24,uuid:"8A0E3AB0-E7FE-414D-96FD-62E933630078"}
 */
function confirmar() {

	var $tot_recep 	= 0
	var $cant 		= recep_cabecera_to_recep_detalle.getSize()
	var $hist 		= databaseManager.getFoundSet('infocom','hist_stock')
	globals.gdeposito = deposito
	
	if (tipo == 0)
	{// Proveedor - Orden de Compra
	
		var $tot_oc		= 0
		var $tot_actual	= 0

		for (var i = 1 ; i <= $cant ; i++)
		{
			var $rcd = recep_cabecera_to_recep_detalle.getRecord(i)
			cargaStock($hist,$rcd,1)

			$tot_recep 	+= $rcd.total_renglon
			if ($rcd.oc_detalle_id != null)
			{
				descargaOc($rcd)
				cambiarEstadoOc($rcd)
				$tot_actual += $rcd.precio_actual * $rcd.cantidad_alter
				$tot_oc 	+= $rcd.precio_sistema_oc * $rcd.cantidad_alter
				$rcd.recep_detalle_to_productos.stock_existencia += $rcd.cantidad_alter
				$rcd.recep_detalle_to_productos.stock_pend_recepcion -= $rcd.cantidad_alter
				$rcd.recep_detalle_to_productos.productos_to_existencias_x_dep.exi_disponible += $rcd.cantidad_alter
				if ($rcd.recep_detalle_to_productos.productos_to_existencias_x_dep.exi_pend_recepcion > $rcd.cantidad_alter)
					$rcd.recep_detalle_to_productos.productos_to_existencias_x_dep.exi_pend_recepcion -= $rcd.cantidad_alter
				else
					$rcd.recep_detalle_to_productos.productos_to_existencias_x_dep.exi_pend_recepcion = 0
			}
		}
		//Saco la diferencia entre el precio al q se compro y el precio actual
		var $dif = $tot_actual - $tot_oc
		application.output($dif)
	}
	else
	{//Cliente - Remito
		
		for (var i = 1 ; i <= $cant ; i++)
		{
			var $rcd 			= recep_cabecera_to_recep_detalle.getRecord(i)
			
			$rcd.total_renglon 	= $rcd.cantidad * $rcd.precio_unitario
			$tot_recep 			+= $rcd.total_renglon
			if ($rcd.recep_detalle_to_rem_detalle.cantidad_pendiente_fac > $rcd.cantidad_alter)
				$rcd.recep_detalle_to_rem_detalle.cantidad_pendiente_fac -= $rcd.cantidad_alter
			else
			{
				$rcd.recep_detalle_to_rem_detalle.cantidad_pendiente_fac = 0
			}
			cargaStock($hist,$rcd,4)
		}
	}
	
	tot_kg 		 = fTotKg
	tot_p2 		 = fTotP2
	fTotRecep 	 = $tot_recep
	total		 = $tot_recep
	recep_estado = 3

	if (databaseManager.saveData())
	{
		var $win = application.getWindow('RECEP_DTL')
		$win.hide()
		$win.destroy()
		forms.recepciones_autoriza.onShow()
		globals.DIALOGS.showWarningDialog('Aviso','Recepción Nº '+ nro_recep+' ha sido autorizada','OK')
	}
	else
		globals.DIALOGS.showWarningDialog('Aviso','Ocurrió un error en la grabación','OK')
}

/**
 * @param {JSRecord<db:/infocom/recep_detalle>} $rcd
 * 
 * @properties={typeid:24,uuid:"8A4609EB-A75F-46B6-86DC-A0B62AE7520D"}
 */
function cambiarEstadoOc($rcd)
{
	var $cab = $rcd.recep_detalle_to_oc_detalle.oc_detalle_to_oc_cabecera.getRecord(1)

	if ($cab.abierta == 0 && $cab.oc_estado != 5)
	{
		/*var query = 'select SUM(cantidad_pendiente_entrega) from oc_detalle' +
			'where oc_cabecera_id = ? group by oc_cabecera_id'
		var args = [$rcd.recep_detalle_to_oc_detalle.oc_cabecera_id]
		var max = 1
		
		var ds = databaseManager.getDataSetByQuery('infocom',query,args,max)
		*/
		
		var $total = 0
			
		for (var i = 1 ; i <= $cab.oc_cabecera_to_oc_detalle.getSize() ; i++)
		{
			var $dtl = $cab.oc_cabecera_to_oc_detalle.getRecord(i)
			
			$total += $dtl.cantidad_pendiente_entrega
		}
		
		if ($total == 0)
			$rcd.recep_detalle_to_oc_detalle.oc_detalle_to_oc_cabecera.oc_estado = 5
		else
			$rcd.recep_detalle_to_oc_detalle.oc_detalle_to_oc_cabecera.oc_estado = 4
	}
}

/**
 * @properties={typeid:24,uuid:"34F8FDDD-728C-4463-8ED6-C134A4B36B5D"}
 */
function cargaStock($hist,$rcd,$tipo)
{
	$hist.newRecord()
	
	$hist.cantidad			= $rcd.cantidad;
	$hist.cantidad_signo 	= $rcd.cantidad
	if ($tipo == 4)
		$hist.cliente_id	= $rcd.recep_detalle_to_recep_cabecera.cliente_id;
	else
		$hist.proveedor_id	= $rcd.recep_detalle_to_recep_cabecera.proveedor_id
	$hist.producto_id		= $rcd.producto_id;
	$hist.cod_producto		= $rcd.cod_producto;
	$hist.fecha				= $rcd.recep_detalle_to_recep_cabecera.fecha;
	$hist.tipo				= $tipo;
	$hist.deposito_id		= $rcd.recep_detalle_to_recep_cabecera.deposito_id;
	$hist.moneda_id			= globals.zparam_moneda_default
	$hist.importe			= $rcd.total_renglon;
	$hist.importe_en_pesos	= $rcd.total_renglon;
	$hist.comprob_tipo		= globals.zparam_codigo_recepciones
	$hist.comprob_sucursal	= $rcd.recep_detalle_to_recep_cabecera.sucursal;
	$hist.comprob_nro		= $rcd.recep_detalle_to_recep_cabecera.nro_recep;
	$hist.comprob_letra		= $rcd.recep_detalle_to_recep_cabecera.letra;
}

/**
 * @properties={typeid:24,uuid:"C93DDFE1-FDCB-4970-ACB7-C9FFB20C8D86"}
 */
function descargaOc($dtl)
{
	/*
	 * Descargo de la orden de compra 
	 * Valorizacion del renglon
	 * Segun si esta relacionado a una oc o no
	 */
	if ($dtl.oc_detalle_id != null)
	{
		if ($dtl.recep_detalle_to_oc_detalle.cantidad_pendiente_entrega < $dtl.cantidad_alter)
		{
			$dtl.recep_detalle_to_oc_detalle.cantidad_pendiente_entrega = 0
		}
		else
			$dtl.recep_detalle_to_oc_detalle.cantidad_pendiente_entrega -= $dtl.cantidad_alter
		var $valor = $dtl.precio_unitario * $dtl.cantidad_alter
	}
	else
		var $valor = $dtl.recep_detalle_to_productos.costo_en_pesos * $dtl.cantidad
	
	$dtl.total_renglon = $valor
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"7A32F297-AC83-49B6-974E-2B9BA26C6EF3"}
 */
function eliminar(event) {
	if (recep_cabecera_to_recep_detalle.recep_kilogramos > 0)
		fTotKg -= recep_cabecera_to_recep_detalle.recep_kilogramos
	if (recep_cabecera_to_recep_detalle.pie_cuadrado > 0)
		fTotP2 -= recep_cabecera_to_recep_detalle.pie_cuadrado
		
	recep_cabecera_to_recep_detalle.deleteRecord()
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"AD807258-1A89-4B8A-BC05-BC1E217C1FB3"}
 */
function agregar(event) {
	recep_cabecera_to_recep_detalle.newRecord(false)
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"C080A0F8-5A2A-442F-AE3A-853B974ACDF3"}
 */
function cancelar(event) {
	databaseManager.revertEditedRecords()
	databaseManager.setAutoSave(true)
	var $win = application.getWindow('RECEP_DTL')
	$win.hide()
	$win.destroy()
}
